package lil.llahn.security.common.utils;

import java.security.MessageDigest;

/**
 * @ClassName: SHA
 * @Description: TODO   Secure Hash Algorithm  -  安全哈希算法
 * @Date: 2019/11/12 16:09
 * @Auther: lil
 */
public class SHA {

    public static String encrypt(String data, Keys key) {
        try {
            // 创建具有指定算法名称的信息摘要
            MessageDigest sha = MessageDigest.getInstance(key.getKey());
            // 使用指定的字节数组对摘要进行最后更新
            sha.update(data.getBytes());
            // 完成摘要计算
            byte[] bytes = sha.digest();
            return DeConv.parseByte2HexStr(bytes);
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage(), e);
        }
    }

    public enum Keys {
        KEY_SHA("SHA"),
        KEY_SHA_1("SHA-1"),
        KEY_SHA_224("SHA-224"),
        KEY_SHA_256("SHA-256"),
        KEY_SHA_384("SHA-384"),
        KEY_SHA_512("SHA-512");

        private String key;

        Keys(String key) {
            this.key = key;
        }

        public String getKey() {
            return key;
        }
    }

    public static void main(String[] args){
        System.out.println(SHA.encrypt("ABCDEFG", Keys.KEY_SHA));
    }
}
